Computational resources may be defined as any of the mechanical, magnetic, electronic, and electrical components that form a computer system. There may be limited computational resource availability for a given project. For example, a company may own a set of computers, a number of which are already consumed by functions outside of the project. If the project is large enough, it may exceed the capacity of any single resource in the set of resources available for use on the project. Further, it may be necessary to combine resources because it is not feasible to obtain or use a state-of-the-art resource that has the appropriate capabilities (e.g., because costs associated with such a resource are prohibitive under a limited budget). Thus, it may be necessary to utilize a collection of multiple computational resources for the project.
Collections of computational resources are typically subject to capability upgrades over time. For example, computer resources may be upgraded to handle increased system burdens. Further, certain computational resources may require upgrades because they become obsolete or because they fail (e.g., a license may expire or a hardware component may no longer suffice to run newer software applications). In these situations, it may not be feasible to upgrade an entire collection of computational resources due to budget constraints and/or time limitations (e.g., availability of personnel). Accordingly, some computational resources allocated to a particular project may have upgrades while others do not. This may result in multiple generations of technology (e.g., various hardware capabilities) within a single collection of computational resources. This multi-generational technology results in a heterogeneous computational resource environment. Difficulties arise in such environments with the assembly of computational resources to efficiently and adequately address certain project needs.